package com.learning.dubbo.features.async.api;

import java.util.concurrent.CompletableFuture;

/**
 * ClassName: GreetingsService
 * Description: 服务接口，服务提供方和消费客户端都需要
 * Date: 2020/6/15 13:43 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
public interface GreetingsService {

    /**
     * 同步接口方法
     *
     * @param name
     * @return
     */
    String sayHi(String name);

    /**
     * 定义 CompletableFuture 签名的异步接口
     * <p>
     * 【注意】异步执行无益于节省资源或提升 RPC 响应性能，因为如果业务执行需要阻塞，则始终还是要有线程来负责执行
     * <p>
     * 从v2.7.0开始，Dubbo的所有异步编程接口开始以 CompletableFuture 为基础
     *
     * @param name
     * @return
     */
    CompletableFuture<String> sayHello(String name);


    /**
     * 使用 AsyncContext 实现异步执行，不需要 CompletableFuture
     *
     * @param name
     * @return
     */
    String sayHello2(String name);
}